To meet changing customer requirements, businesses today must offer customers more and better services. At the same time, they must continue to operate efficiently to remain viable in increasingly competitive environments. Consequently, businesses are moving toward a service-based paradigm in which monolithic applications requiring dedicated IT resources such as servers, storage, and networking devices are replaced with business processes that share and optimize these and other IT resources.
In an exemplary system facilitating such a paradigm shift, systems infrastructure software delivers a shared, virtualized pool of IT resources to meet the demands of multiple application types based on business policies. These multiple application types, such as batch processes, online processes, transactional processes, parallel processes, data-centric processes, and management applications, generally comprise a set of potentially heterogeneous independent workload components with differing resource requirements. Maximum efficiency is achieved in the distributed computing environment when each application has access to precisely the resources that it needs for precisely the length of time that it needs them. When a resource remains allocated to an application beyond the time required for processing the application's workload, the resource is idle, resulting in the application processing costing more in terms of computing resources than necessary. On the other hand, if an application must wait for a needed resource to be requested and allocated, the application takes longer to run than necessary, increasing response times and reducing throughput. One way to maximize efficiency in the distributed computing environment is to provide for separate application management and resource management. Decoupling application management from resource management also maximizes system scalability as well as system performance capability. To achieve such an efficient, scalable, high performance environment, a component is needed between the various application managers and the various resource managers to ensure that shared resources are allocated among applications as efficiently as possible and to maintain consistency and reliability within the entire system.